using System;
using System.Collections.Generic;
using System.Text;
using System.Data;           //CommandType
using System.Data.SqlClient; //SqlConnection, SqlCommand, SqlDataReader
using Etna.Exportaciones.En;

namespace Etna.Exportaciones.Ad
{
   public class AdSolicitudAtencion
   {
      //public AdSolicitudAtencion(SqlConnection con)
      //{
      //   conexion = con;
      //}

       public EnSolicitudAtencion Leer(int pidSolicitud, SqlConnection conexion)
      {
         EnSolicitudAtencion oEnSolicitudAtencion = null;
         SqlCommand cmd = new SqlCommand("sExportaciones_SolicitudAtencionLeer", conexion);
         cmd.CommandType = CommandType.StoredProcedure;

         SqlParameter Parametro1 = cmd.Parameters.Add("@piidSolicitud", SqlDbType.Int);
         Parametro1.Direction = ParameterDirection.Input;
         Parametro1.Value = pidSolicitud;

         SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
         if (drd != null)
         {

            if (drd.Read())
            {
               oEnSolicitudAtencion = new EnSolicitudAtencion();
               oEnSolicitudAtencion.idSolicitud = drd.GetInt32(0);

               if (!drd.IsDBNull(1))
               {
                  oEnSolicitudAtencion.numero = drd.GetString(1);
               }
               oEnSolicitudAtencion.idRequerimiento = drd.GetInt32(2);

               if (!drd.IsDBNull(3))
               {
                   oEnSolicitudAtencion.sRuc = drd.GetString(3);
               }
               if (!drd.IsDBNull(4))
               {
                   oEnSolicitudAtencion.sRazonSocial = drd.GetString(4);
               }

               if (!drd.IsDBNull(5))
               {
                   oEnSolicitudAtencion.DireccionEntrega = drd.GetString(5);
               }
               if (!drd.IsDBNull(6))
               {
                   oEnSolicitudAtencion.DireccionCobranza = drd.GetString(6);
               }
               if (!drd.IsDBNull(7))
               {
                   oEnSolicitudAtencion.DireccionFactura = drd.GetString(7);
               } 
               if (!drd.IsDBNull(8))
               {
                   oEnSolicitudAtencion.fechaEntrega = drd.GetDateTime(8);
               }
               if (!drd.IsDBNull(9))
               {
                  oEnSolicitudAtencion.estadoSolicitud = drd.GetString(9);
               }
               if (!drd.IsDBNull(10))
               {
                   oEnSolicitudAtencion.fechaAprobacion = drd.GetDateTime(10);
               }
               if (!drd.IsDBNull(11))
               {
                   oEnSolicitudAtencion.fechaCreacion = drd.GetDateTime(11);
               }
            }
            drd.Close();
         }

         return oEnSolicitudAtencion;
      }

       public bool Insertar(EnSolicitudAtencion poEnSolicitudAtencion, SqlConnection conexion)
      {
         bool bExito = false;
         SqlCommand cmd = new SqlCommand("sExportaciones_SolicitudAtencionInsertar", conexion);
         cmd.CommandType = CommandType.StoredProcedure;

         SqlParameter Parametro1 = cmd.Parameters.Add("@piidRequerimiento", SqlDbType.Int);
         Parametro1.Direction = ParameterDirection.Input;
         Parametro1.Value = poEnSolicitudAtencion.idRequerimiento;

         SqlParameter Parametro2 = cmd.Parameters.Add("@pinumero", SqlDbType.NChar);
         Parametro2.Direction = ParameterDirection.Input;
         Parametro2.Value = poEnSolicitudAtencion.numero;

         SqlParameter Parametro3 = cmd.Parameters.Add("@pifechaEntrega", SqlDbType.NChar);
         Parametro3.Direction = ParameterDirection.Input;
         Parametro3.Value = poEnSolicitudAtencion.fechaEntrega;

         SqlParameter Parametro4 = cmd.Parameters.Add("@piestadoSolicitud", SqlDbType.VarChar);
         Parametro4.Direction = ParameterDirection.Input;
         Parametro4.Value = poEnSolicitudAtencion.estadoSolicitud;

         SqlParameter Parametro5 = cmd.Parameters.Add("@pifechaAprobacion", SqlDbType.NChar);
         Parametro5.Direction = ParameterDirection.Input;
         Parametro5.Value = poEnSolicitudAtencion.fechaAprobacion;

         SqlParameter Parametro6 = cmd.Parameters.Add("@pifechaCreacion", SqlDbType.NChar);
         Parametro6.Direction = ParameterDirection.Input;
         Parametro6.Value = poEnSolicitudAtencion.fechaCreacion;

         int n = cmd.ExecuteNonQuery();
         bExito = (n > 0);

         return bExito;
      }


       public bool Modificar(EnSolicitudAtencion poEnSolicitudAtencion, SqlConnection conexion)
      {
         bool bExito = false;
         SqlCommand cmd = new SqlCommand("sExportaciones_SolicitudAtencionModificar", conexion);
         cmd.CommandType = CommandType.StoredProcedure;

         SqlParameter Parametro1 = cmd.Parameters.Add("@piidSolicitud", SqlDbType.Int);
         Parametro1.Direction = ParameterDirection.Input;
         Parametro1.Value = poEnSolicitudAtencion.idSolicitud;

         SqlParameter Parametro2 = cmd.Parameters.Add("@piidRequerimiento", SqlDbType.Int);
         Parametro2.Direction = ParameterDirection.Input;
         Parametro2.Value = poEnSolicitudAtencion.idRequerimiento;

         SqlParameter Parametro3 = cmd.Parameters.Add("@pinumero", SqlDbType.NChar);
         Parametro3.Direction = ParameterDirection.Input;
         Parametro3.Value = poEnSolicitudAtencion.numero;

         SqlParameter Parametro4 = cmd.Parameters.Add("@pifechaEntrega", SqlDbType.NChar);
         Parametro4.Direction = ParameterDirection.Input;
         Parametro4.Value = poEnSolicitudAtencion.fechaEntrega;

         SqlParameter Parametro5 = cmd.Parameters.Add("@piestadoSolicitud", SqlDbType.VarChar);
         Parametro5.Direction = ParameterDirection.Input;
         Parametro5.Value = poEnSolicitudAtencion.estadoSolicitud;

         SqlParameter Parametro6 = cmd.Parameters.Add("@pifechaAprobacion", SqlDbType.NChar);
         Parametro6.Direction = ParameterDirection.Input;
         Parametro6.Value = poEnSolicitudAtencion.fechaAprobacion;

         SqlParameter Parametro7 = cmd.Parameters.Add("@pifechaCreacion", SqlDbType.NChar);
         Parametro7.Direction = ParameterDirection.Input;
         Parametro7.Value = poEnSolicitudAtencion.fechaCreacion;

         int n = cmd.ExecuteNonQuery();
         bExito = (n > 0);

         return bExito;
      }

       public List<EnSolicitudAtencion> Listar(
          int pidSolicitud,
          int pidRequerimiento,
          string pRucCliente,
          string pRazSocialCliente,
          int pidEstado,         
          string pdfechaDesde,
          string pdfechaHasta,    

          SqlConnection conexion)
       {
           List<EnSolicitudAtencion> listaSolicitudAtencion = null;
           EnSolicitudAtencion oSolicitudAtencion = null;
           SqlCommand cmd = new SqlCommand("sExportaciones_SolicitudAtencionListar", conexion);
           cmd.CommandType = CommandType.StoredProcedure;

           SqlParameter Parametro1 = null;
           if (pidSolicitud <= 0 || pidSolicitud == null)
           {
               Parametro1 = cmd.Parameters.Add("@piidSolicitudAtencion", DBNull.Value);
           }
           else
           {
               Parametro1 = cmd.Parameters.Add("@piidSolicitudAtencion", SqlDbType.Int);
               Parametro1.Direction = ParameterDirection.Input;
               Parametro1.Value = pidSolicitud;
           }

           SqlParameter Parametro2 = null;
           if (pidRequerimiento <= 0 || pidRequerimiento == null)
           {
               Parametro2 = cmd.Parameters.Add("@piidRequerimiento", DBNull.Value);
           }
           else
           {
               Parametro2 = cmd.Parameters.Add("@piidRequerimiento", SqlDbType.Int);
               Parametro2.Direction = ParameterDirection.Input;
               Parametro2.Value = pidRequerimiento;
           }

           SqlParameter Parametro3 = null;
           if (String.IsNullOrEmpty(pRucCliente))
           {
               Parametro3 = cmd.Parameters.Add("@piRucCliente", DBNull.Value);
           }
           else
           {
               Parametro3 = cmd.Parameters.Add("@piRucCliente", SqlDbType.VarChar, 50);
               Parametro3.Direction = ParameterDirection.Input;
               Parametro3.Value = pRucCliente;
           }

           SqlParameter Parametro4 = null;
           if (String.IsNullOrEmpty(pRazSocialCliente))
           {
               Parametro4 = cmd.Parameters.Add("@piRazSocialCliente", DBNull.Value);
           }
           else
           {
               Parametro4 = cmd.Parameters.Add("@piRazSocialCliente", SqlDbType.VarChar, 50);
               Parametro4.Direction = ParameterDirection.Input;
               Parametro4.Value = pRazSocialCliente;
           }

           SqlParameter Parametro5 = null;
           if (pidEstado <= 0 || pidEstado == null)
           {
               Parametro5 = cmd.Parameters.Add("@piEstado", DBNull.Value);
           }
           else
           {
               Parametro5 = cmd.Parameters.Add("@piEstado", SqlDbType.Int);
               Parametro5.Direction = ParameterDirection.Input;
               Parametro5.Value = pidEstado;
           }

           SqlParameter Parametro6 = null;
           if (string.IsNullOrEmpty(pdfechaDesde))
           {
               Parametro6 = cmd.Parameters.Add("@piFechaDesde", DBNull.Value);
           }
           else
           {
               Parametro6 = cmd.Parameters.Add("@piFechaDesde", SqlDbType.Date);
               Parametro6.Direction = ParameterDirection.Input;
               Parametro6.Value = DateTime.Parse(pdfechaDesde);
           }

           SqlParameter Parametro7 = null;
           if (string.IsNullOrEmpty(pdfechaHasta))
           {
               Parametro7 = cmd.Parameters.Add("@piFechaHasta", DBNull.Value);
           }
           else
           {
               Parametro7 = cmd.Parameters.Add("@piFechaHasta", SqlDbType.Date);
               Parametro7.Direction = ParameterDirection.Input;
               Parametro7.Value = DateTime.Parse(pdfechaHasta);
           }

         
           SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
           if (drd != null)
           {

               listaSolicitudAtencion = new List<EnSolicitudAtencion>();
               while (drd.Read())
               {
                   oSolicitudAtencion = new EnSolicitudAtencion();
                   oSolicitudAtencion.idSolicitud = drd.GetInt32(0);
                   if (!drd.IsDBNull(1))
                   {
                       oSolicitudAtencion.idRequerimiento = drd.GetInt32(1);
                   }

                   if (!drd.IsDBNull(2))
                   {
                       oSolicitudAtencion.estadoSolicitud = drd.GetString(2);
                   }
                   if (!drd.IsDBNull(3))
                   {
                       oSolicitudAtencion.sDescripcion = drd.GetString(3);
                   }
                   if (!drd.IsDBNull(4))
                   {
                       oSolicitudAtencion.fechaCreacion = drd.GetDateTime(4);
                   }
                   if (!drd.IsDBNull(5))
                   {
                       oSolicitudAtencion.sRuc = drd.GetString(5);
                   }
                   if (!drd.IsDBNull(6))
                   {
                       oSolicitudAtencion.sRazonSocial = drd.GetString(6);
                   }

                   listaSolicitudAtencion.Add(oSolicitudAtencion);
               }
               drd.Close();
           }

           return listaSolicitudAtencion;
       }
   }
}
